#!/bin/bash
set -e

log() {
    echo "$(date '+%Y-%m-%d %H:%M:%S') - $1"
}

run_migrations() {
    log "开始数据库迁移"

    # 初始化迁移（如果不存在）
    if [ ! -d "migrations" ]; then
        log "初始化迁移系统"
        if ! flask db init; then
            log "❌ 迁移初始化失败"
            return 1
        fi
    fi

    # 生成迁移脚本（静默处理，可能没有变更）
    log "生成迁移脚本"
    flask db migrate -m "auto migration" 2>/dev/null || true

    # 应用迁移
    log "应用数据库迁移"
    if flask db upgrade; then
        log "✅ 迁移成功"
        return 0
    else
        log "❌ 迁移失败，尝试修复版本映射"
        if flask db stamp head; then
            log "✅ 版本修复成功，重新尝试迁移"
            if flask db upgrade; then
                log "✅ 迁移成功"
                return 0
            fi
        fi
        log "❌ 迁移修复失败"
        return 1
    fi
}

main() {
    log "🚀 启动应用容器"

    # 运行数据库迁移
    if ! run_migrations; then
        log "⚠️  数据库迁移失败，但继续启动应用"
        # 生产环境可能需要退出，开发环境可以继续
        # exit 1
    fi

    log "✅ 启动前准备完成"
    log "启动应用: $*"

    exec "$@"
}

# 运行主函数
main "$@"